In a storage system, a host provides Input/Output (I/O) requests to a storage controller. The I/O requests indicate that data should be written to, or read from, one or more Logical Block Addresses (LBAs) of a logical volume. The storage controller processes incoming I/O requests to correlate the requested LBAs with physical addresses on one or more storage devices that store data for the volume. The storage controller can then split an I/O request into individual requests that are each directed to a corresponding storage device for the logical volume in order to retrieve/store the data at the physical addresses. Storage controllers utilize caches in order to enhance the overall speed of processing.